/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package editorsvg.css;

import editorsvg.editor.atributos.Atributo;
import editorsvg.editor.documento.ElementoSVG;
import editorsvg.propiedades.Propiedad;

/**
 * Asignación de una propiedad en una regla css.
 * @author Jorge Berjano
 */
public class Asignacion {

    private String nombreAtributo;
    private String valor;
    private boolean importante;
//    private Asignacion siguiente;

    public Asignacion(String atributo, String valor, boolean importante) {
        this.nombreAtributo = atributo;
        this.valor = valor;
        this.importante = importante;
    }

//    public final void setSiguiente(Asignacion siguiente) {
//        this.siguiente = siguiente;
//    }
//
//    public final Asignacion getSiguiente() {
//        return siguiente;
//    }

    public void aplicar(ElementoSVG elemento, boolean soloImportantes) {
        if (soloImportantes && !importante) {
            return;
        }

        Propiedad propiedad = elemento.getPropiedades().obtenerPropiedadAtributoXml(nombreAtributo);
        Atributo atributo = propiedad.getAtributo();

        try {
            atributo.setTexto(valor);
            atributo.setOrigen(Atributo.CSS);
        } catch (Exception ex) {
            System.err.println("No se ha podido asignar la propiedad " + atributo);
        }

//        if (getSiguiente() != null) {
//            getSiguiente().aplicar(elemento, elementoPadre, soloImportantes);
//        }

    }

    public boolean isImportante() {
        return importante;
    }

    public void setImportante(boolean importante) {
        this.importante = importante;
    }
}
